﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.IO;
using System.Windows.Markup;
using Wrapper;

namespace WPF
{
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            // Initialisation des composants
            InitializeComponent();
        }

        private void ComboBoxItem_Select_NbJoueur2(object sender, RoutedEventArgs e)
        {
            J4.Visibility = System.Windows.Visibility.Hidden;
            J3.Visibility = System.Windows.Visibility.Hidden;
            J1J2.Visibility = System.Windows.Visibility.Visible;
        }

        private void ComboBoxItem_Select_NbJoueur3(object sender, RoutedEventArgs e)
        {
            J4.Visibility = System.Windows.Visibility.Hidden;
            J3.Visibility = System.Windows.Visibility.Visible;
            J1J2.Visibility = System.Windows.Visibility.Hidden;
        }

        private void ComboBoxItem_Select_NbJoueur4(object sender, RoutedEventArgs e)
        {
            J4.Visibility = System.Windows.Visibility.Visible;
            J3.Visibility = System.Windows.Visibility.Visible;
            J1J2.Visibility = System.Windows.Visibility.Hidden;
        }

        private void AllerVueOrdrePassage(object sender, RoutedEventArgs e)
        {
            // L'utilisateur n'a pas choisi le nombre de joueurs
            if (ComboBoxNbJoueur.SelectedItem == null)
            {
                MessageBox.Show("Veuillez indiquer le nombre de joueurs");
                return;
            }

            // Nombre de joueurs = DEUX
            if (ComboBoxNbJoueur.SelectedItem == Select2J)
            {
                // On test que tous les champs soit correctement remplis
                if (Namejoueur1.Text == "")
                {
                    MessageBox.Show("Champ : Nom du joueur n°1 vide");
                }
                else if (Namejoueur2.Text == "")
                {
                    MessageBox.Show("Champ : Nom du joueur n°2 vide");
                }
                else if (ComboBoxCoul1.SelectedItem == null)
                {
                    MessageBox.Show("La 1ère couleur du joueur n°1 n'est pas selectionné");
                }
                else if (ComboBoxCoul2.SelectedItem == null)
                {
                    MessageBox.Show("La 1ère couleur du joueur n°2 n'est pas selectionné");
                }
                else if (ComboBoxCoul12.SelectedItem == null)
                {
                    MessageBox.Show("La 2ème couleur du joueur n°1 n'est pas selectionné");
                }
                else if (ComboBoxCoul22.SelectedItem == null)
                {
                    MessageBox.Show("La 2ème couleur du joueur n°2 n'est pas selectionné");
                }
                else if ((string)ComboBoxCoul1.SelectionBoxItem == (string)ComboBoxCoul2.SelectionBoxItem)
                {
                    MessageBox.Show("La 1ère couleur du joueur n°1 est la même que la 1ère couleur du joueur n°2");
                }
                else if ((string)ComboBoxCoul12.SelectionBoxItem == (string)ComboBoxCoul22.SelectionBoxItem)
                {
                    MessageBox.Show("La 2ème couleur du joueur n°1 est la même que la 2ème couleur du joueur n°2");
                }
                else if ((string)ComboBoxCoul1.SelectionBoxItem == (string)ComboBoxCoul22.SelectionBoxItem)
                {
                    MessageBox.Show("La 1ère couleur du joueur n°1 est la même que la 2ème couleur du joueur n°2");
                }
                else if ((string)ComboBoxCoul12.SelectionBoxItem == (string)ComboBoxCoul2.SelectionBoxItem)
                {
                    MessageBox.Show("La 2ème couleur du joueur n°1 est la même que la 1ère couleur du joueur n°2");
                }
                else if ((string)ComboBoxCoul1.SelectionBoxItem == (string)ComboBoxCoul12.SelectionBoxItem)
                {
                    MessageBox.Show("Le joueur n°1 a deux fois la même couleur");
                }
                else if ((string)ComboBoxCoul2.SelectionBoxItem == (string)ComboBoxCoul22.SelectionBoxItem)
                {
                    MessageBox.Show("Le joueur n°2 a deux fois la même couleur");
                }
                // Tous les champs sont correctement remplis
                else
                {
                    // Récupération des noms des joueurs et de la couleur des flottes
                    string n1 = Namejoueur1.Text;
                    string n2 = Namejoueur2.Text;
                    string c11 = (string)ComboBoxCoul1.SelectionBoxItem;
                    string c12 = (string)ComboBoxCoul12.SelectionBoxItem;
                    string c21 = (string)ComboBoxCoul2.SelectionBoxItem;
                    string c22 = (string)ComboBoxCoul22.SelectionBoxItem;

                    // Création d'un wrapper jeu à DEUX joueurs
                    WrapperJeu monWrapperJeu = new WrapperJeu(2);

                    // Création de la partie
                    monWrapperJeu.creerPartie();

                    // Création des Joueurs
                    ArrayList couleursFlottesJoueur1 = new ArrayList();
                    couleursFlottesJoueur1.Add(c11);
                    couleursFlottesJoueur1.Add(c12);
                    KeyValuePair<string, ArrayList> joueur1 = new KeyValuePair<string, ArrayList>(n1, couleursFlottesJoueur1);
                    
                    ArrayList couleursFlottesJoueur2 = new ArrayList();
                    couleursFlottesJoueur2.Add(c21);
                    couleursFlottesJoueur2.Add(c22);
                    KeyValuePair<string, ArrayList> joueur2 = new KeyValuePair<string, ArrayList>(n2, couleursFlottesJoueur2);

                    // Regroupement des joueurs dans un tableau
                    ArrayList tabJoueurs = new ArrayList();
                    tabJoueurs.Add(joueur1);
                    tabJoueurs.Add(joueur2);

                    // Création de la vue OrdrePassage
                    VueOrdrePassage vueOrdrePassage = new VueOrdrePassage(monWrapperJeu, tabJoueurs);
                    vueOrdrePassage.Left = this.Left;
                    vueOrdrePassage.Top = this.Top;

                    // Passage à la vue OrdrePassage
                    vueOrdrePassage.Show();
                    this.Close();
                }
            }

            // Nombre de joueurs = TROIS
            else if (ComboBoxNbJoueur.SelectedItem == Select3J)
            {
                // On test que tous les champs soit correctement remplis
                if (Namejoueur1.Text == "")
                {
                    MessageBox.Show("Champ : Nom du joueur n°1 vide");
                }
                else if (Namejoueur2.Text == "")
                {
                    MessageBox.Show("Champ : Nom du joueur n°2 vide");
                }
                else if (Namejoueur3.Text == "")
                {
                    MessageBox.Show("Champ : Nom du joueur n°3 vide");
                }
                else if (ComboBoxCoul1.SelectedItem == null)
                {
                    MessageBox.Show("La couleur du joueur n°1 n'est pas selectionné");
                }
                else if (ComboBoxCoul2.SelectedItem == null)
                {
                    MessageBox.Show("La couleur du joueur n°2 n'est pas selectionné");
                }
                else if (ComboBoxCoul3.SelectedItem == null)
                {
                    MessageBox.Show("La couleur du joueur n°3 n'est pas selectionné");
                }

                else if ((string)ComboBoxCoul1.SelectionBoxItem == (string)ComboBoxCoul2.SelectionBoxItem)
                {
                    MessageBox.Show("La couleur du joueur n°1 est la même que la couleur du joueur n°2");
                }
                else if ((string)ComboBoxCoul1.SelectionBoxItem == (string)ComboBoxCoul3.SelectionBoxItem)
                {
                    MessageBox.Show("La couleur du joueur n°1 est la même que la couleur du joueur n°3");
                }
                else if ((string)ComboBoxCoul2.SelectionBoxItem == (string)ComboBoxCoul3.SelectionBoxItem)
                {
                    MessageBox.Show("La couleur du joueur n°2 est la même que la couleur du joueur n°3");
                }
                // Si tous les champs sont correctement remplis :
                else
                {
                    // Récupération des noms des joueurs et de la couleur des flottes
                    string n1 = Namejoueur1.Text;
                    string n2 = Namejoueur2.Text;
                    string n3 = Namejoueur3.Text;
                    string c1 = (string)ComboBoxCoul1.SelectionBoxItem;
                    string c2 = (string)ComboBoxCoul2.SelectionBoxItem;
                    string c3 = (string)ComboBoxCoul3.SelectionBoxItem;

                    // Création d'un wrapper jeu à TROIS joueurs
                    WrapperJeu monWrapperJeu = new WrapperJeu(3);

                    // Création de la partie
                    monWrapperJeu.creerPartie();

                    // Création des Joueurs
                    ArrayList couleursFlottesJoueur1 = new ArrayList();
                    couleursFlottesJoueur1.Add(c1);
                    KeyValuePair<string, ArrayList> joueur1 = new KeyValuePair<string, ArrayList>(n1, couleursFlottesJoueur1);

                    ArrayList couleursFlottesJoueur2 = new ArrayList();
                    couleursFlottesJoueur2.Add(c2);
                    KeyValuePair<string, ArrayList> joueur2 = new KeyValuePair<string, ArrayList>(n2, couleursFlottesJoueur2);

                    ArrayList couleursFlottesJoueur3 = new ArrayList();
                    couleursFlottesJoueur3.Add(c3);
                    KeyValuePair<string, ArrayList> joueur3 = new KeyValuePair<string, ArrayList>(n3, couleursFlottesJoueur3);

                    // Regroupement des joueurs dans un tableau
                    ArrayList tabJoueurs = new ArrayList();
                    tabJoueurs.Add(joueur1);
                    tabJoueurs.Add(joueur2);
                    tabJoueurs.Add(joueur3);

                    // Création de la vue OrdrePassage
                    VueOrdrePassage vueOrdrePassage = new VueOrdrePassage(monWrapperJeu,tabJoueurs);
                    vueOrdrePassage.Left = this.Left;
                    vueOrdrePassage.Top = this.Top;

                    // Passage à la vue OrdrePassage
                    vueOrdrePassage.Show();
                    this.Close();
                }
            }

            // Nombre de joueurs = QUATRE
            else if (ComboBoxNbJoueur.SelectedItem == Select4J)
            {
                //On test que tous les champs soit correctement remplis
                if (Namejoueur1.Text == "")
                {
                    MessageBox.Show("Champ : Nom du joueur n°1 vide");
                }
                else if (Namejoueur2.Text == "")
                {
                    MessageBox.Show("Champ : Nom du joueur n°2 vide");
                }
                else if (Namejoueur3.Text == "")
                {
                    MessageBox.Show("Champ : Nom du joueur n°3 vide");
                }
                else if (Namejoueur4.Text == "")
                {
                    MessageBox.Show("Champ : Nom du joueur n°4 vide");
                }
                else if (ComboBoxCoul1.SelectedItem == null)
                {
                    MessageBox.Show("La couleur du joueur n°1 n'est pas selectionné");
                }
                else if (ComboBoxCoul2.SelectedItem == null)
                {
                    MessageBox.Show("La couleur du joueur n°2 n'est pas selectionné");
                }
                else if (ComboBoxCoul3.SelectedItem == null)
                {
                    MessageBox.Show("La couleur du joueur n°3 n'est pas selectionné");
                }
                else if (ComboBoxCoul4.SelectedItem == null)
                {
                    MessageBox.Show("La couleur du joueur n°4 n'est pas selectionné");
                }
                else if ((string)ComboBoxCoul1.SelectionBoxItem == (string)ComboBoxCoul2.SelectionBoxItem)
                {
                    MessageBox.Show("La couleur du joueur n°1 est la même que la couleur du joueur n°2");
                }
                else if ((string)ComboBoxCoul1.SelectionBoxItem == (string)ComboBoxCoul3.SelectionBoxItem)
                {
                    MessageBox.Show("La couleur du joueur n°1 est la même que la couleur du joueur n°3");
                }
                else if ((string)ComboBoxCoul2.SelectionBoxItem == (string)ComboBoxCoul3.SelectionBoxItem)
                {
                    MessageBox.Show("La couleur du joueur n°2 est la même que la couleur du joueur n°3");
                }
                else if ((string)ComboBoxCoul1.SelectionBoxItem == (string)ComboBoxCoul4.SelectionBoxItem)
                {
                    MessageBox.Show("La couleur du joueur n°1 est la même que la couleur du joueur n°4");
                }
                else if ((string)ComboBoxCoul2.SelectionBoxItem == (string)ComboBoxCoul4.SelectionBoxItem)
                {
                    MessageBox.Show("La couleur du joueur n°2 est la même que la couleur du joueur n°4");
                }
                else if ((string)ComboBoxCoul3.SelectionBoxItem == (string)ComboBoxCoul4.SelectionBoxItem)
                {
                    MessageBox.Show("La couleur du joueur n°3 est la même que la couleur du joueur n°4");
                }
                // Si tous les champs sont correctement rempli :
                else
                {
                    // Récupération des noms des joueurs et de la couleur des flottes
                    string n1 = Namejoueur1.Text;
                    string n2 = Namejoueur2.Text;
                    string n3 = Namejoueur3.Text;
                    string n4 = Namejoueur4.Text;
                    string c1 = (string)ComboBoxCoul1.SelectionBoxItem;
                    string c2 = (string)ComboBoxCoul2.SelectionBoxItem;
                    string c3 = (string)ComboBoxCoul3.SelectionBoxItem;
                    string c4 = (string)ComboBoxCoul4.SelectionBoxItem;

                    // Création d'un wrapper jeu à QUATRE joueurs
                    WrapperJeu monWrapperJeu = new WrapperJeu(4);

                    // Création de la partie
                    monWrapperJeu.creerPartie();

                    // Création des Joueurs
                    ArrayList couleursFlottesJoueur1 = new ArrayList();
                    couleursFlottesJoueur1.Add(c1);
                    KeyValuePair<string, ArrayList> joueur1 = new KeyValuePair<string, ArrayList>(n1, couleursFlottesJoueur1);

                    ArrayList couleursFlottesJoueur2 = new ArrayList();
                    couleursFlottesJoueur2.Add(c2);
                    KeyValuePair<string, ArrayList> joueur2 = new KeyValuePair<string, ArrayList>(n2, couleursFlottesJoueur2);

                    ArrayList couleursFlottesJoueur3 = new ArrayList();
                    couleursFlottesJoueur3.Add(c3);
                    KeyValuePair<string, ArrayList> joueur3 = new KeyValuePair<string, ArrayList>(n3, couleursFlottesJoueur3);

                    ArrayList couleursFlottesJoueur4 = new ArrayList();
                    couleursFlottesJoueur4.Add(c4);
                    KeyValuePair<string, ArrayList> joueur4 = new KeyValuePair<string, ArrayList>(n4, couleursFlottesJoueur4);

                    // Regroupement des joueurs dans un tableau
                    ArrayList tabJoueurs = new ArrayList();
                    tabJoueurs.Add(joueur1);
                    tabJoueurs.Add(joueur2);
                    tabJoueurs.Add(joueur3);
                    tabJoueurs.Add(joueur4);

                    // Création de la vue OrdrePassage
                    VueOrdrePassage vueOrdrePassage = new VueOrdrePassage(monWrapperJeu,tabJoueurs);
                    vueOrdrePassage.Left = this.Left;
                    vueOrdrePassage.Top = this.Top;

                    // Passage à la vue OrdrePassage
                    vueOrdrePassage.Show();
                    this.Close();
                }
            }
        }
    }
}